// Network.h: interface for the FCNetwork class.
//
//////////////////////////////////////////////////////////////////////

#include "stdlib.h"
#include "Cell.h"

class FCNetwork  
{
public:
	void LoadFrom(char name[]);
	void SaveAs(char name[]);
	
	void CopyWeights(const FCNetwork * network);
	void Epsilon(int pull, int CurrentNeuron, int WeightNum, bool Top);
	void SetInput(double *array, int pull);
	double TrainNN(double *array,int ArrayNum,double demand);
	void BackProp(double Demand, int pull);
	double ActivateFunc(double Net);
	double GetOutput(int pull);

	FCCell** Neurons;
	int (*NumInLayer)[2];
//	int NumInLayer[4][2];  //1. rozmer je index zaciatku vrstva, 2. rozmer pocet neuronov vo vrstve
	void Inicialize();
	int LayersNum;			//pocet vrstiev siete
	int NeuronNum;			//pocet neuronov v sieti
	double Alfa,Delta;
	
	FCNetwork();
	FCNetwork(const FCNetwork& network);
	FCNetwork(int InputNumb, int HidenNum, double alfa_, double delta_);
	virtual ~FCNetwork();

};

